//package org.example.service.book.impl;
//
//
//import com.alibaba.excel.EasyExcel;
//import com.alibaba.excel.ExcelWriter;
//import com.alibaba.excel.write.metadata.WriteSheet;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.metadata.IPage;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import org.example.dao.dao.book.CommodityDao;
//import org.example.dao.dao.book.ImageDao;
//import org.example.dao.dao.book.KindCommodityDao;
//import org.example.dao.dao.book.KindDao;
//import org.example.dao.entity.book.BCommodity;
//import org.example.dao.entity.book.BImage;
//import org.example.dao.entity.book.BKind;
//import org.example.dao.entity.book.BKindCommodity;
//import org.example.dao.dto.book.CCommodityDto;
//import org.example.dao.vo.DateVo;
//import org.example.dao.vo.ExcelVo;
//import org.example.service.book.CommodityService;
//import org.example.skytool.commom.IdWorker;
//import org.example.skytool.commom.StringUtil;
//import org.example.skytool.excel.listener.ImportAndUpdateCommodityListener;
//import org.example.skytool.oss.minio.MinioConstant;
//import org.example.skytool.oss.minio.MinioUtil;
//import org.springframework.stereotype.Service;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletResponse;
//import java.time.LocalDate;
//import java.util.ArrayList;
//import java.util.List;
//
//@Service("commodityService")
//public class CommodityServiceImpl implements CommodityService {
//
//
//    @Resource
//    private MinioUtil minioUtil;
//
//    @Resource
//    private ImageDao imageDao;
//    @Resource
//    private CommodityDao commodityDao;
//
//    @Resource
//    private IdWorker idWorker;
//
//    @Resource
//    private KindDao kindDao;
//
//    @Resource
//    private KindCommodityDao kindCommodityDao;
//
//
//
//    @Override
//    public List<CCommodityDto> getCommodityByKind(BKind BKind) {
//        List<CCommodityDto> list = commodityDao.selectCommodityListByKind(BKind);
//        return list;
//    }
//
//    @Override
//    public CCommodityDto getCommodityById(String id) {
//        CCommodityDto CCommodityDto = commodityDao.selectCommodityById(id);
//        return CCommodityDto;
//    }
//
//    @Override
//    public List<CCommodityDto> getCommodityBySales(Integer number) {
//        List<CCommodityDto> list = commodityDao.selectCommodityBySales(number);
//        return list;
//    }
//
//    @Override
//    public List<String> getCommodityNoImage() {
//        List<CCommodityDto> list = commodityDao.selectCommodityBySales(238);
//        List<String> list1 = new ArrayList<>();
//        for (CCommodityDto CCommodityDto : list) {
//            if (CCommodityDto.getImages() == null || CCommodityDto.getImages().size() == 0) {
//                list1.add(CCommodityDto.getIsbn());
//            }
//        }
//        return list1;
//    }
//
//    @Override
//    public void outportCommodity(DateVo date, HttpServletResponse httpServletResponse) {
//
//    }
//
//
//    @Override
//    public BCommodity updateCommodity(BCommodity BCommodity) {
//        commodityDao.updateById(BCommodity);
//        return BCommodity;
//    }
//
//    @Override
//    public IPage<BCommodity> selectCommodityByKind(BKind BKind, Integer start, Integer limit) {
//        String name = BKind.getName();
//        String level = BKind.getLevel();
//        String master = BKind.getMaster();
//        //获取专业列表
//        LambdaQueryWrapper<BKind> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//        if (!StringUtil.isEmpty(name)) {
//            lambdaQueryWrapper.eq(org.example.dao.entity.book.BKind::getName, name);
//        }
//        if (!StringUtil.isEmpty(level)) {
//            lambdaQueryWrapper.eq(org.example.dao.entity.book.BKind::getLevel, level);
//        }
//        if (!StringUtil.isEmpty(master)) {
//            lambdaQueryWrapper.eq(org.example.dao.entity.book.BKind::getMaster, master);
//        }
//        List<BKind> list = kindDao.selectList(lambdaQueryWrapper);
//        List<String> listKindId = new ArrayList<>();
//        for (BKind BKind1 : list) {
//            listKindId.add(BKind1.getId());
//        }
//        //获取关系列表
//        LambdaQueryWrapper<BKindCommodity> lambdaQueryWrapper1 = new LambdaQueryWrapper();
//        lambdaQueryWrapper1.in(BKindCommodity::getKindId, listKindId);
//        List<BKindCommodity> listBKindCommodity = kindCommodityDao.selectList(lambdaQueryWrapper1);
//        List<String> listCommodityId = new ArrayList<>();
//        for (BKindCommodity BKindCommodity : listBKindCommodity) {
//            listCommodityId.add(BKindCommodity.getCommodityId());
//        }
//        //获取商品列表
//        LambdaQueryWrapper<BCommodity> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
//        lambdaQueryWrapper2.in(BCommodity::getId, listCommodityId);
//        IPage<BCommodity> listCommodity = commodityDao.selectPage(new Page(start, limit), lambdaQueryWrapper2);
//        return listCommodity;
//
//    }
//
//    @Override
//    public List<BImage> selectImageByCommodity(String id) {
//        LambdaQueryWrapper<BImage> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//        lambdaQueryWrapper.eq(BImage::getLinkId, id);
//        List<BImage> list = imageDao.selectList(lambdaQueryWrapper);
//        return list;
//    }
//
//
//    @Override
//    public void downloadSheetCommodity(HttpServletResponse response) {
//        String fileName = "商品导入示例表";
//        ExcelWriter excelWriter = null;
//        response.setContentType("application/vnd.ms-excel");
//        response.setCharacterEncoding("utf8");
//        response.setHeader("Content-disposition", "attachment;filename=" + fileName);
//        try {
//            excelWriter = EasyExcel.write(response.getOutputStream()).build();
//        } catch (Exception e) {
//        }
//        WriteSheet sheet0 = EasyExcel.writerSheet(0, "书籍清单总表").head(ExcelVo.class).build();
//        excelWriter.write(new ArrayList<>(), sheet0);
//        if (excelWriter != null) {
//            excelWriter.finish();
//        }
//    }
//
//    @Override
//    public String addImageByFile(String id, MultipartFile file) {
//        String url = minioUtil.upload(file, MinioConstant.BOOK,id);
//        BImage BImage = new BImage();
//        BImage.setId(idWorker.nextId() + "");
//        BImage.setLinkId(id);
//        BImage.setImage(url);
//        BImage.setCreateTime(LocalDate.now());
//        imageDao.insert(BImage);
//        return url;
//    }
//
//    @Override
//    public void addImageByUrl(BImage BImage) {
//        BImage BImage1 = new BImage();
//        BImage.setId(idWorker.nextId() + "");
//        BImage.setLinkId(BImage1.getLinkId());
//        BImage.setImage(BImage1.getImage());
//        BImage.setCreateTime(LocalDate.now());
//        imageDao.insert(BImage);
//    }
//
//    @Override
//    public void deleteImage(String id) {
//        imageDao.deleteById(id);
//    }
//
//
//
//    @Override
//    public void uploadCommodityList(MultipartFile file) {
//        try {
//            EasyExcel.read(file.getInputStream(), ExcelVo.class, new ImportAndUpdateCommodityListener(this)).sheet().doRead();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    public void uploadAndUpdateCommodity(ExcelVo excelVo) {
//        //先判断是否有该书籍(通过isbn)
//        String isbn = excelVo.getIsbn();
//        LambdaQueryWrapper<BCommodity> commodityWapper = new LambdaQueryWrapper<>();
//        commodityWapper.eq(BCommodity::getIsbn, isbn);
//        BCommodity BCommodity = commodityDao.selectOne(commodityWapper);
//        //如果有，按照表格数据进行更新
//        //如果没有，按照表格内容进行添加
//        if (BCommodity == null) {
//            BCommodity = excelVo.getCommodity();
//            BCommodity.setId(idWorker.nextId() + "");
//            commodityDao.insert(BCommodity);
//        } else {
//            excelVo.updateCommodity(BCommodity);
//            commodityDao.updateById(BCommodity);
//        }
//        //判断是否有该类型
//        String name = excelVo.getKindName();
//        String level = excelVo.getLevel();
//        String master = excelVo.getMaster();
//        LambdaQueryWrapper<BKind> kindWapper = new LambdaQueryWrapper<>();
//        kindWapper.eq(BKind::getMaster, master);
//        kindWapper.eq(BKind::getLevel, level);
//        kindWapper.eq(BKind::getName, name);
//        BKind BKind = kindDao.selectOne(kindWapper);
//        //如果有，不做处理
//        //如果没有，添加进入
//        if (BKind == null) {
//            BKind = new BKind();
//            BKind.setId(idWorker.nextId() + "");
//            BKind.setName(name);
//            BKind.setLevel(level);
//            BKind.setMaster(master);
//            kindDao.insert(BKind);
//        }
//        //判断是否有该类型绑定
//        String kindId = BKind.getId();
//        String commodityId = BCommodity.getId();
//        LambdaQueryWrapper<BKindCommodity> kindCommodityWrapper = new LambdaQueryWrapper<>();
//        kindCommodityWrapper.eq(BKindCommodity::getKindId, kindId);
//        kindCommodityWrapper.eq(BKindCommodity::getCommodityId, commodityId);
//        BKindCommodity BKindCommodity = kindCommodityDao.selectOne(kindCommodityWrapper);
//        //如果有，不做处理
//        //如果没有，添加进入
//        if (BKindCommodity == null) {
//            BKindCommodity = new BKindCommodity();
//            BKindCommodity.setId(idWorker.nextId() + "");
//            BKindCommodity.setKindId(kindId);
//            BKindCommodity.setCommodityId(commodityId);
//            kindCommodityDao.insert(BKindCommodity);
//        }
//    }
//
//    @Override
//    public BCommodity selectCommodityByIsbn(String isbn) {
//        LambdaQueryWrapper<BCommodity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//        lambdaQueryWrapper.eq(BCommodity::getIsbn, isbn);
//        return commodityDao.selectOne(lambdaQueryWrapper);
//    }
//
//    @Override
//    public void downloadAllCommodity() {
//        List<ExcelVo> list1 = new ArrayList<>();
//
//
//        String fileName = "商品总表" + ".xlsx";
//        try (ExcelWriter excelWriter = EasyExcel.write(fileName, ExcelVo.class).build()) {
//            WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
//            excelWriter.write(list1, writeSheet);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//    }
//
//
//    @Override
//    public void deleteCommodity(String id) {
//        commodityDao.deleteById(id);
//    }
//
//    @Override
//    public BCommodity insertCommodity(ExcelVo excelVo) {
//        String isbn = excelVo.getIsbn();
//        LambdaQueryWrapper<BCommodity> commodityWapper = new LambdaQueryWrapper<>();
//        commodityWapper.eq(BCommodity::getIsbn, isbn);
//        BCommodity BCommodity = commodityDao.selectOne(commodityWapper);
//        //如果有，按照表格数据进行更新
//        //如果没有，按照表格内容进行添加
//        if (BCommodity == null) {
//            BCommodity = excelVo.getCommodity();
//            BCommodity.setId(idWorker.nextId() + "");
//            commodityDao.insert(BCommodity);
//        } else {
//            excelVo.updateCommodity(BCommodity);
//            commodityDao.updateById(BCommodity);
//        }
//        //判断是否有该类型
//        String name = excelVo.getKindName();
//        String level = excelVo.getLevel();
//        String master = excelVo.getMaster();
//        LambdaQueryWrapper<BKind> kindWapper = new LambdaQueryWrapper<>();
//        kindWapper.eq(BKind::getMaster, master);
//        kindWapper.eq(BKind::getLevel, level);
//        kindWapper.eq(BKind::getName, name);
//        BKind BKind = kindDao.selectOne(kindWapper);
//        //如果有，不做处理
//        //如果没有，添加进入
//        if (BKind == null) {
//            BKind = new BKind();
//            BKind.setId(idWorker.nextId() + "");
//            BKind.setName(name);
//            BKind.setLevel(level);
//            BKind.setMaster(master);
//            kindDao.insert(BKind);
//        }
//        //判断是否有该类型绑定
//        String kindId = BKind.getId();
//        String commodityId = BCommodity.getId();
//        LambdaQueryWrapper<BKindCommodity> kindCommodityWrapper = new LambdaQueryWrapper<>();
//        kindCommodityWrapper.eq(BKindCommodity::getKindId, kindId);
//        kindCommodityWrapper.eq(BKindCommodity::getCommodityId, commodityId);
//        BKindCommodity BKindCommodity = kindCommodityDao.selectOne(kindCommodityWrapper);
//        //如果有，不做处理
//        //如果没有，添加进入
//        if (BKindCommodity == null) {
//            BKindCommodity = new BKindCommodity();
//            BKindCommodity.setId(idWorker.nextId() + "");
//            BKindCommodity.setKindId(kindId);
//            BKindCommodity.setCommodityId(commodityId);
//            kindCommodityDao.insert(BKindCommodity);
//        }
//        return BCommodity;
//    }
//
//
//}
